#pragma once
#include "IGameState.h"
#include "../SGD Wrappers/SGD_Handle.h"
#include "Game.h"

/**************************************************************/
// InstructionsState class
//	- handles the Instructions menu
//	- SINGLETON (statically allocated, not dynamic)
class InstructionsState : public IGameState
{
public:
	/**********************************************************/
	// Singleton Accessor
	static InstructionsState* GetInstance(void);


	/**********************************************************/
	// IGameState Interface:
	virtual void	Enter(void)				override;	// load resources
	virtual void	Exit(void)				override;	// unload resources

	virtual bool	Input(void)				override;	// handle user input
	virtual void	Update(float elapsedTime)	override;	// update entites
	virtual void	Render(void)				override;	// render entities / menu

	
protected:
	/**********************************************************/
	// SINGLETON!
	InstructionsState(void) = default;
	virtual ~InstructionsState(void) = default;

	InstructionsState(const InstructionsState&) = delete;
	InstructionsState& operator= (const InstructionsState&) = delete;

	bool m_bSecondScreen = false;
	bool m_bThirdScreen = false;
	/**********************************************************/
	SGD::HTexture m_hControllerimage = SGD::INVALID_HANDLE;
	SGD::HTexture m_hInstructions = SGD::INVALID_HANDLE;

	Game* theGame = Game::GetInstance();
};